import pymysql
import pandas as pd
from com.atzl.common.UsersMessage import MessagesUsers
from com.atzl.functions.accounting.func.Logs import CheckLogs
from com.atzl.common.StatusCode import StatusCode
from com.atzl.functions.accounting.sql.QueryData import QueryDataByBase


# 登录验证模块
class Loginfun(CheckLogs):

    # 通过用户名,到数据库查询相关数据,在利用密码校验
    #   参数:
    #       user_name:用户名
    #       password:用户密码
    def login(self, user_name, password):
        conn = self.creat_conn()
        cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
        sql = QueryDataByBase.verify_the_user(user_name)  # 通过用户名查询用户基本信息
        cur.execute(sql)  # 执行sql
        username = cur.fetchall()  # 获取数据
        pass_word = pd.DataFrame(username)  # 将数据定义为DataFrame对象,方便操作具体数据
        # 判断数据库存储的用户密码是否符合输入的密码
        if str(pass_word.iloc[0, 0]) == str(password):  # 如果密码符合进行以下操作
            # 将信息暂存到公共模块
            MessagesUsers.PASS_WORD = str(password)  # 将密码暂存到公共模块
            MessagesUsers.USER_NAME = str(user_name)  # 将用户名暂存到公共模块
            MessagesUsers.PERMISSION_TYPE = str(pass_word.iloc[0, 1])  # 将公网IP暂存到公共模块
            MessagesUsers.REAL_NAME = str(pass_word.iloc[0, 2])  # 将真实姓名暂存到公共模块
            cur.close()
            conn.close()
            return StatusCode.NORMAL_OPERATION  # 返回值 正常运行
        else:
            cur.close()
            conn.close()
            return StatusCode.INCORRECT_PASSWORD  # 返回值 密码不正确



